<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>函数的封装</title>
</head>
<body>
<div></div>
<p></p>
<span></span>
<div></div>
<p></p>
<script>

    //this的含义看谁调用
    //1>没有任何引用就是全局，window（注意：在浏览器中是window）
    //2>如果是对象引用：this就是当前的对象
    //  o.func()
    //  arr[i]()
    //3>有new的就是构造器调用，this就是刚刚创建的实例对象
    //4>上下文调用（自定义的this）call apply
  /*function each(arr,callback){
      for(var i=0;i<arr.length;i++){
         callback.call(arr[i],arr[i],i);
      }
      return arr;
  }

    each([1,2,3],function(){
        console.log(this);
    });
*/
    //怎样跳出循环
   /* function each(arr,callback){
     for(var i=0;i<arr.length;i++){
     if(callback.call(arr[i],arr[i],i)==false) return;
     }
     return arr;
     }
     each([1,2,3],function(){
     console.log(this);
     return false;
     });*/

    //但是上面代码中跳出循环有一个坑 应该是三个等号===
    function each(arr,callback){
        for(var i=0;i<arr.length;i++){
            var ret = callback.call(arr[i],arr[i],i);
            if(ret===false) return;
        }
        return false;
    }

    var arr = [1,2,3];
    each(arr,function(){
        console.log(this);
        return false;
    });
</script>
</body>
</html>